﻿Public Class DunidInmobiliarias

    Public Shared Function SeleccionarTodo(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idEdiMzn", SqlDbType.Int).Value = pUnidInmobiliaria.idEdiMzn
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("nroPiso")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTerrModelo")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTechada")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaConstruida")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaVendible")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")), _
                                    dr.GetDecimal(dr.GetOrdinal("descuento")), _
                                    dr.GetDecimal(dr.GetOrdinal("dsctoMonto")), _
                                    dr.GetDecimal(dr.GetOrdinal("precioBase")), _
                                    dr.GetInt32(dr.GetOrdinal("idMoneda")), _
                                    dr.GetString(dr.GetOrdinal("descMoneda")), _
                                    dr.GetDecimal(dr.GetOrdinal("comision")), _
                                    dr.GetDecimal(dr.GetOrdinal("porcAcciones")), _
                                    dr.GetDecimal(dr.GetOrdinal("precioMCuadrs")), _
                                    dr.GetInt32(dr.GetOrdinal("idEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("observaciones")), _
                                    dr.GetInt16(dr.GetOrdinal("bloqueado")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetString(dr.GetOrdinal("Nrocertificado")), _
                                    dr.GetDecimal(dr.GetOrdinal("BonoTechoPropio")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function
    Public Shared Function SeleccionarXEstado(ByVal descEmpresa As String, ByVal idProyecto As Int32, ByVal idEtapa As Int32) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_selXEstado", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = idEtapa

                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("nroPiso")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTerrModelo")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTechada")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaConstruida")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaVendible")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")), _
                                    dr.GetDecimal(dr.GetOrdinal("descuento")), _
                                    dr.GetDecimal(dr.GetOrdinal("dsctoMonto")), _
                                    dr.GetDecimal(dr.GetOrdinal("precioBase")), _
                                    dr.GetInt32(dr.GetOrdinal("idMoneda")), _
                                    dr.GetString(dr.GetOrdinal("descMoneda")), _
                                    dr.GetDecimal(dr.GetOrdinal("comision")), _
                                    dr.GetDecimal(dr.GetOrdinal("porcAcciones")), _
                                    dr.GetDecimal(dr.GetOrdinal("precioMCuadrs")), _
                                    dr.GetInt32(dr.GetOrdinal("idEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("observaciones")), _
                                    dr.GetInt16(dr.GetOrdinal("bloqueado")), _
                                    dr.GetString(dr.GetOrdinal("estado")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function

    Public Shared Function consultaInmuebleXtpo(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As Int32
        Dim cantidad As Int32 = 0

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_buscXInmueblesXTpo", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@inmuebles", SqlDbType.NVarChar, 1000).Value = pUnidInmobiliaria.inmuebles
                cmd.Parameters.Add("@cantidad", SqlDbType.Int).Direction = ParameterDirection.Output
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    cantidad = Convert.ToInt32(cmd.Parameters("@cantidad").Value)
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return cantidad
    End Function

    '-------   MENU CONSULTA STOCK  ------'
    Public Shared Function SeleccionarTodoXAll(ByVal descEmpresa As String, ByVal idProyecto As Int32, ByVal idEtapa As Int32) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_selXAll", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = idEtapa
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("nroHabitaciones")), _
                                    dr.GetInt32(dr.GetOrdinal("nroBaños")), _
                                    dr.GetInt16(dr.GetOrdinal("patioJardin")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaPatio")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("nroPiso")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTerrModelo")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaTechada")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaConstruida")), _
                                    dr.GetDecimal(dr.GetOrdinal("areaVendible")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")), _
                                    dr.GetDecimal(dr.GetOrdinal("descuento")), _
                                    dr.GetInt32(dr.GetOrdinal("idMoneda")), _
                                    dr.GetString(dr.GetOrdinal("descMoneda")), _
                                    dr.GetDecimal(dr.GetOrdinal("comision")), _
                                    dr.GetDecimal(dr.GetOrdinal("porcAcciones")), _
                                    dr.GetDecimal(dr.GetOrdinal("precioMCuadrs")), _
                                    dr.GetInt32(dr.GetOrdinal("idFormaPago")), _
                                    dr.GetInt32(dr.GetOrdinal("tpoGestion")), _
                                    dr.GetInt32(dr.GetOrdinal("idEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("cliente")), _
                                    dr.GetString(dr.GetOrdinal("observaciones")), _
                                    dr.GetInt16(dr.GetOrdinal("bloqueado")), _
                                    dr.GetString(dr.GetOrdinal("estado")), _
                                    dr.GetString(dr.GetOrdinal("Vendedor")), _
                                    dr.GetDecimal(dr.GetOrdinal("BonoTechoPropio")), _
                                    dr.GetString(dr.GetOrdinal("NroCertificado")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function
    '-------------------------------------'

    Public Shared Function Seleccionar_(ByVal descEmpresa As String) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_", cn)
                cmd.CommandType = CommandType.StoredProcedure
                'cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                'cmd.Parameters.Add("@idEdiMzn", SqlDbType.Int).Value = pUnidInmobiliaria.idEdiMzn
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetInt32(dr.GetOrdinal("nroPiso")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function
    Public Shared Function Añadir(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_add", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idEdiMzn", SqlDbType.Int).Value = pUnidInmobiliaria.idEdiMzn
                'Se genera ===> cmd.Parameters.Add("@idUndInmob", SqlDbType.Int).Value = pUnidInmobiliaria.idUndInmob
                cmd.Parameters.Add("@idModelo", SqlDbType.Int).Value = pUnidInmobiliaria.EmodeloInmueble.idModelo
                cmd.Parameters.Add("@nroInmueble", SqlDbType.VarChar, 10).Value = pUnidInmobiliaria.nroInmueble
                cmd.Parameters.Add("@nroPiso", SqlDbType.Int).Value = pUnidInmobiliaria.nroPiso
                cmd.Parameters.Add("@areaTerrModelo", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaTerrModelo
                cmd.Parameters.Add("@areaTechada", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaTechada
                cmd.Parameters.Add("@areaConstruida", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaConstruida
                cmd.Parameters.Add("@areaVendible", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaVendible
                cmd.Parameters.Add("@valorVenta", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.valorVenta
                cmd.Parameters.Add("@descuento", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.descuento
                cmd.Parameters.Add("@dsctoMonto", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.dsctoMonto
                cmd.Parameters.Add("@precioBase", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.precioBase
                cmd.Parameters.Add("@idMoneda", SqlDbType.Int).Value = pUnidInmobiliaria.Emoneda.idMoneda
                cmd.Parameters.Add("@comision", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.comision
                cmd.Parameters.Add("@porcAcciones", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.porcAcciones
                cmd.Parameters.Add("@precioMCuadrs", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.precioMCuadrs
                cmd.Parameters.Add("@observaciones", SqlDbType.VarChar, 55).Value = pUnidInmobiliaria.observaciones
                cmd.Parameters.Add("@bloqueado", SqlDbType.Int).Value = pUnidInmobiliaria.bloqueado
                'cmd.Parameters.Add("@idEstadoInmueble", SqlDbType.Int).Value = pUnidInmobiliaria.EestadoInmueble.idEstadoInmueble
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = pUnidInmobiliaria.idUsuario
                cmd.Parameters.Add("@NroCertificado", SqlDbType.VarChar, 50).Value = pUnidInmobiliaria.NroCertificado
                cmd.Parameters.Add("@BonoTechoPropio", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.BonoTechoPropio
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function
    Public Shared Function Editar(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_edit", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idEdiMzn", SqlDbType.Int).Value = pUnidInmobiliaria.idEdiMzn
                cmd.Parameters.Add("@idUndInmob", SqlDbType.Int).Value = pUnidInmobiliaria.idUndInmob
                cmd.Parameters.Add("@idModelo", SqlDbType.Int).Value = pUnidInmobiliaria.EmodeloInmueble.idModelo
                cmd.Parameters.Add("@nroInmueble", SqlDbType.VarChar, 10).Value = pUnidInmobiliaria.nroInmueble
                cmd.Parameters.Add("@nroPiso", SqlDbType.Int).Value = pUnidInmobiliaria.nroPiso
                cmd.Parameters.Add("@areaTerrModelo", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaTerrModelo
                cmd.Parameters.Add("@areaTechada", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaTechada
                cmd.Parameters.Add("@areaConstruida", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaConstruida
                cmd.Parameters.Add("@areaVendible", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.areaVendible
                cmd.Parameters.Add("@valorVenta", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.valorVenta
                cmd.Parameters.Add("@descuento", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.descuento
                cmd.Parameters.Add("@dsctoMonto", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.dsctoMonto
                cmd.Parameters.Add("@precioBase", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.precioBase
                cmd.Parameters.Add("@idMoneda", SqlDbType.Int).Value = pUnidInmobiliaria.Emoneda.idMoneda
                cmd.Parameters.Add("@comision", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.comision
                cmd.Parameters.Add("@porcAcciones", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.porcAcciones
                cmd.Parameters.Add("@precioMCuadrs", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.precioMCuadrs
                cmd.Parameters.Add("@observaciones", SqlDbType.VarChar, 55).Value = pUnidInmobiliaria.observaciones
                cmd.Parameters.Add("@bloqueado", SqlDbType.SmallInt).Value = pUnidInmobiliaria.bloqueado
                'cmd.Parameters.Add("@idEstadoInmueble", SqlDbType.Int).Value = pUnidInmobiliaria.EestadoInmueble.idEstadoInmueble
                cmd.Parameters.Add("@estado", SqlDbType.Char, 1).Value = pUnidInmobiliaria.estado
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = pUnidInmobiliaria.idUsuario
                cmd.Parameters.Add("@NroCertificado", SqlDbType.VarChar, 50).Value = pUnidInmobiliaria.NroCertificado
                cmd.Parameters.Add("@BonoTechoPropio", SqlDbType.Decimal, 15, 2).Value = pUnidInmobiliaria.BonoTechoPropio
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function
    Public Shared Function Eliminar(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As Boolean
        Dim resultado As Boolean = False

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_unidInmobiliarias_del", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idEdiMzn", SqlDbType.Int).Value = pUnidInmobiliaria.idEdiMzn
                cmd.Parameters.Add("@idUndInmob", SqlDbType.Int).Value = pUnidInmobiliaria.idUndInmob
                cmd.Parameters.Add("@idUsuario", SqlDbType.Int).Value = pUnidInmobiliaria.idUsuario
                Try
                    cn.Open()
                    cmd.ExecuteNonQuery()
                    resultado = True
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return resultado
    End Function

    '-------    MENU SEGUIMIENTO    --------'
    Public Shared Function SeleccionarXNroPartida(ByVal descEmpresa As String, ByVal pSeparacionVenta As EseparacionVenta) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_separacionVentaSeguimientoNotaria_sel", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pSeparacionVenta.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pSeparacionVenta.idEtapa
                cmd.Parameters.Add("@idSeparacionVenta", SqlDbType.Int).Value = pSeparacionVenta.idSeparacionVenta
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idSeparacionVenta")), _
                                    dr.GetInt32(dr.GetOrdinal("idSeparacionVentaDetalle")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroPartida")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function

    '-------   MENU ATENCION CLIENTE  ------'
    Public Shared Function SeleccionarXPosCliente(ByVal descEmpresa As String, ByVal pProforma As EproformaCabecera) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_proformaDetalle_selXPosCliente", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pProforma.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pProforma.idEtapa
                cmd.Parameters.Add("@idProforma", SqlDbType.Int).Value = pProforma.idProforma
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idProforma")), _
                                    dr.GetInt32(dr.GetOrdinal("idProformaDetalle")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function
    Public Shared Function SeleccionarXCliente(ByVal descEmpresa As String, ByVal pSeparacionVenta As EseparacionVenta) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_separacionVentaDetalle_selXCliente", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pSeparacionVenta.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pSeparacionVenta.idEtapa
                cmd.Parameters.Add("@codigoSeparacion", SqlDbType.Char, 11).Value = pSeparacionVenta.Ecliente.codigoSeparacion
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idSeparacionVenta")), _
                                    dr.GetInt32(dr.GetOrdinal("idSeparacionVentaDetalle")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function

    '-------    MENU REPORTE EVOLTA / VERSUS    ------------'
    Public Shared Function SeleccionarXPosClienteXVersus(ByVal descEmpresa As String, ByVal pProforma As EproformaCabecera) As List(Of EunidInmobiliarias)
        Dim unidadesInmb As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_proformaDetalle_selXPosClienteXVersus", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idEmpresa", SqlDbType.Int).Value = pProforma.idEmpresa
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pProforma.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pProforma.idEtapa
                cmd.Parameters.Add("@idProforma", SqlDbType.Int).Value = pProforma.idProforma
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            unidadesInmb = New List(Of EunidInmobiliarias)
                            Dim unidad As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                unidad = New EunidInmobiliarias( _
                                    dr.GetInt32(dr.GetOrdinal("idEmpresa")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idProforma")), _
                                    dr.GetInt32(dr.GetOrdinal("idProformaDetalle")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetInt32(dr.GetOrdinal("idEdiMzn")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")))
                                unidadesInmb.Add(unidad)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return unidadesInmb
    End Function

    '-------    MENU REPORTE INMUEBLES POR ETAPA    --------'
    Public Shared Function Reporte_InmueblesXEtapaTodos(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As List(Of EunidInmobiliarias)
        Dim inmueblesxEtapas As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_reporte_inmueblexEtapaTodos", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idTpoConstruccion", SqlDbType.Int).Value = pUnidInmobiliaria.EediMazn.EtpoConstruccion.idTpoConstruccion
                cmd.Parameters.Add("@idTpoInmueble", SqlDbType.Int).Value = pUnidInmobiliaria.EmodeloInmueble.EtpoInmueble.idTpoInmueble
                cmd.Parameters.Add("@nroInmueble", SqlDbType.Char, 10).Value = pUnidInmobiliaria.nroInmueble
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            inmueblesxEtapas = New List(Of EunidInmobiliarias)
                            Dim inmueble As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                inmueble = New EunidInmobiliarias( _
                                    dr.GetInt64(dr.GetOrdinal("correlativo")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")), _
                                    dr.GetInt32(dr.GetOrdinal("idEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroDocumento")), _
                                    dr.GetString(dr.GetOrdinal("nombre")), _
                                    dr.GetString(dr.GetOrdinal("apePaterno")), _
                                    dr.GetString(dr.GetOrdinal("apeMaterno")), _
                                    dr.GetString(dr.GetOrdinal("nroDocumentoCy")), _
                                    dr.GetString(dr.GetOrdinal("nombreCy")), _
                                    dr.GetString(dr.GetOrdinal("apePaternoCy")), _
                                    dr.GetString(dr.GetOrdinal("apeMaternoCY")))
                                inmueblesxEtapas.Add(inmueble)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return inmueblesxEtapas
    End Function
    Public Shared Function Reporte_InmueblesXEtapaVendidos(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As List(Of EunidInmobiliarias)
        Dim inmueblesxEtapas As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_reporte_inmueblexEtapaVendidos", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idTpoConstruccion", SqlDbType.Int).Value = pUnidInmobiliaria.EediMazn.EtpoConstruccion.idTpoConstruccion
                cmd.Parameters.Add("@idTpoInmueble", SqlDbType.Int).Value = pUnidInmobiliaria.EmodeloInmueble.EtpoInmueble.idTpoInmueble
                cmd.Parameters.Add("@nroInmueble", SqlDbType.Char, 10).Value = pUnidInmobiliaria.nroInmueble
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            inmueblesxEtapas = New List(Of EunidInmobiliarias)
                            Dim inmueble As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                inmueble = New EunidInmobiliarias( _
                                    dr.GetInt64(dr.GetOrdinal("correlativo")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")), _
                                    dr.GetInt32(dr.GetOrdinal("idEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroDocumento")), _
                                    dr.GetString(dr.GetOrdinal("nombre")), _
                                    dr.GetString(dr.GetOrdinal("apePaterno")), _
                                    dr.GetString(dr.GetOrdinal("apeMaterno")), _
                                    dr.GetString(dr.GetOrdinal("nroDocumentoCy")), _
                                    dr.GetString(dr.GetOrdinal("nombreCy")), _
                                    dr.GetString(dr.GetOrdinal("apePaternoCy")), _
                                    dr.GetString(dr.GetOrdinal("apeMaternoCY")))
                                inmueblesxEtapas.Add(inmueble)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return inmueblesxEtapas
    End Function
    Public Shared Function Reporte_InmueblesXEtapaDisponibles(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As List(Of EunidInmobiliarias)
        Dim inmueblesxEtapas As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_reporte_inmueblexEtapaDisponibles", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                cmd.Parameters.Add("@idTpoConstruccion", SqlDbType.Int).Value = pUnidInmobiliaria.EediMazn.EtpoConstruccion.idTpoConstruccion
                cmd.Parameters.Add("@idTpoInmueble", SqlDbType.Int).Value = pUnidInmobiliaria.EmodeloInmueble.EtpoInmueble.idTpoInmueble
                cmd.Parameters.Add("@nroInmueble", SqlDbType.Char, 10).Value = pUnidInmobiliaria.nroInmueble
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            inmueblesxEtapas = New List(Of EunidInmobiliarias)
                            Dim inmueble As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                inmueble = New EunidInmobiliarias( _
                                    dr.GetInt64(dr.GetOrdinal("correlativo")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")), _
                                    dr.GetInt32(dr.GetOrdinal("idEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descEstadoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroDocumento")), _
                                    dr.GetString(dr.GetOrdinal("nombre")), _
                                    dr.GetString(dr.GetOrdinal("apePaterno")), _
                                    dr.GetString(dr.GetOrdinal("apeMaterno")), _
                                    dr.GetString(dr.GetOrdinal("nroDocumentoCy")), _
                                    dr.GetString(dr.GetOrdinal("nombreCy")), _
                                    dr.GetString(dr.GetOrdinal("apePaternoCy")), _
                                    dr.GetString(dr.GetOrdinal("apeMaternoCY")))
                                inmueblesxEtapas.Add(inmueble)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return inmueblesxEtapas
    End Function
    Public Shared Function Reporte_InmueblesXEtapaBloqueados(ByVal descEmpresa As String, ByVal pUnidInmobiliaria As EunidInmobiliarias) As List(Of EunidInmobiliarias)
        Dim inmueblesxEtapas As List(Of EunidInmobiliarias) = Nothing

        Using cn As New SqlConnection(ConfigurationManager.ConnectionStrings(descEmpresa).ConnectionString)
            Using cmd As New SqlCommand("usp_reporte_inmueblexEtapaBloqueados", cn)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@idProyecto", SqlDbType.Int).Value = pUnidInmobiliaria.idProyecto
                cmd.Parameters.Add("@idEtapa", SqlDbType.Int).Value = pUnidInmobiliaria.idEtapa
                Try
                    cn.Open()
                    Using dr As SqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult Or CommandBehavior.CloseConnection)
                        If dr.HasRows Then
                            inmueblesxEtapas = New List(Of EunidInmobiliarias)
                            Dim inmueble As EunidInmobiliarias = Nothing
                            Do While dr.Read
                                inmueble = New EunidInmobiliarias( _
                                    dr.GetInt64(dr.GetOrdinal("correlativo")), _
                                    dr.GetInt32(dr.GetOrdinal("idProyecto")), _
                                    dr.GetInt32(dr.GetOrdinal("idEtapa")), _
                                    dr.GetInt32(dr.GetOrdinal("idUndInmob")), _
                                    dr.GetString(dr.GetOrdinal("nomEdiMzn")), _
                                    dr.GetInt32(dr.GetOrdinal("idModelo")), _
                                    dr.GetString(dr.GetOrdinal("nomModelo")), _
                                    dr.GetInt32(dr.GetOrdinal("idTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("descTpoInmueble")), _
                                    dr.GetString(dr.GetOrdinal("nroInmueble")), _
                                    dr.GetDecimal(dr.GetOrdinal("valorVenta")))
                                inmueblesxEtapas.Add(inmueble)
                            Loop
                            dr.Close()
                        End If
                    End Using
                Catch ex As Exception
                    Throw
                End Try
            End Using
        End Using

        Return inmueblesxEtapas
    End Function
    '-------------------------------------------------------'
End Class
